#include "ModuleTimeDifference.h"

void ModuleTimeDifference::init(QCVModuleHandlerInterface * parent)
{
	this->parent=parent;
	win=new QWidget();
  layout=new QVBoxLayout(win);
	l_dt=new QLabel(win);	
	layout->addWidget(l_dt);
	
	t1=0;
	t2=0;

	dt.create(1,1);
	dt(0,0)=0;
}
////////////////////////////////////////////////////////////////////////////////
void ModuleTimeDifference::free()
{
	delete win;
}
////////////////////////////////////////////////////////////////////////////////
cv::Mat & ModuleTimeDifference::process()
{
	l_dt->setText(QString::number(dt(0,0))+tr(" ms"));
	return dt;
}
////////////////////////////////////////////////////////////////////////////////
void ModuleTimeDifference::setInput(int n,const cv::Mat & m)
{
	if(n==0)
	{	
		t1=cvGetTickCount();
	}
	else if(n==1)
	{	
		dt(0,0)=abs(cvGetTickCount()-t1)/(cvGetTickFrequency()*1000.0);
	}
}
////////////////////////////////////////////////////////////////////////////////
QWidget* ModuleTimeDifference::widget()
{
	return win;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleTimeDifference::getName()
{
	return tr("Intervalle de Temps");
}
////////////////////////////////////////////////////////////////////////////////
int ModuleTimeDifference::nbInputs()
{
	return 2;
}
////////////////////////////////////////////////////////////////////////////////
bool ModuleTimeDifference::setParams(QString params)
{	
	if(params==tr("no params"))
	{
		return true;
	}
	else
	{
		return false;
	}	
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleTimeDifference::getParams()
{
	return tr("no params");
}

////////////////////////////////////////////////////////////////////////////////
QCVModuleInterface * ModuleTimeDifference::clone()
{
	return new ModuleTimeDifference;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleTimeDifference::help(int id)
{
	if(id==-2)
	{
		return tr("Permet de mesurer un interval de temps");
	}
	else if(id==-1)
	{
		return tr("number");
	}
	else if(id==0)
	{
		return tr("something");
	}
	else if(id==1)
	{
		return tr("something");
	}
	else
	{
		return tr("erreur");
	}
}
////////////////////////////////////////////////////////////////////////////////
Q_EXPORT_PLUGIN2(ModuleTimeDifference_plugin,ModuleTimeDifference);  
